package com.wind.taobao.core.webservice
{
	import com.adobe.serialization.json.JSON;
	import com.wind.taobao.core.util.TaobaoConstants;


	/**
	 * 淘宝返回抽象类
	 * @author fxy
	 */
	public class TaobaoResponse
	{
		/**
		 * 错误代码
		 */
		public var errorCode:String;
		/**
		 * 错误信息
		 */
		public var msg:String;
		/**
		 * 重定向
		 */
		public var redirectUrl:String;
		/**
		 * 返回数据
		 */
		public var body:Object;

		/**
		 * 返回数据格式
		 */
		public var format:String="json";

		public function TaobaoResponse(response:TaobaoResponse=null)
		{
			if (response != null)
			{
				if (this.format == "json")
				{
					var jsonRsp:Object=JSON.decode(String(response.body));
					if (jsonRsp.hasOwnProperty(TaobaoConstants.ERROR_RSP))
					{
						this.errorCode=jsonRsp[TaobaoConstants.ERROR_RSP][TaobaoConstants.ERROR_CODE];
						this.msg=jsonRsp[TaobaoConstants.ERROR_RSP][TaobaoConstants.ERROR_MSG];
					}
					this.format=response.format;
					this.body=jsonRsp;
					this.redirectUrl=response.redirectUrl;
				}
			}
		}

		/**
		 * 转换具体Response
		 *
		 */
		public function convert(value:TaobaoResponse):TaobaoResponse
		{
			if (value != null)
			{
				value.format=this.format;
				value.body=this.body;
				value.errorCode=this.errorCode;
				value.msg=this.msg;
				value.redirectUrl=this.redirectUrl;
			}
			return value;
		}

		/**
		 * 判断是否调用API成功
		 *
		 * @return 如果成功,返回true
		 */
		public function get isSuccess():Boolean
		{
			return null == errorCode;
		}

		public function get isRedirect():Boolean
		{
			return null != redirectUrl;
		}

		/**
		 * 得到绑定用户需要重定向的URL
		 *
		 * @param target
		 *            绑定用户成功后重定向的目标地址
		 * @return
		 */
		public function getRedirectUrl(target:String):String
		{
			return redirectUrl + "&sip_redirecturl=" + target;
		}

		/**
		 * 得到绑定用户需要重定向的URL，对绑定后重定向回isv的url做urlEncode编码
		 *
		 * @param target
		 * @return
		 */
		public function getEncodedRedirectUrl(target:String):String
		{
			return redirectUrl + "&sip_redirecturl=" + encodeURI(target);
		}
	}
}